#include<bits/stdc++.h>
using namespace std;
int n,now,dep[1000010],tr[1000010][3],siz[1000010],cnt;
long long ans;
struct node{
	queue<int>f;
	queue<int>g;
}tty;
struct nobe{
	int u,v;
	bool operator<(const nobe& z)const{
		return u>z.u;
	}
};
string s;
void add(){
	int now=0;
	for(int i=0;i<s.size();i++){
		if(tr[now][s[i]-'0']==0){
			tr[now][s[i]-'0']=++cnt;
			dep[tr[now][s[i]-'0']]=dep[now]+1;
		}
		now=tr[now][s[i]-'0'];
	}
	siz[now]++;
	return;
}
node dfs(int x,int y){
	priority_queue<nobe>q;
	if(tr[x][0]!=0){
		node tmp=dfs(tr[x][0],y+siz[x]);
		while(!tmp.f.empty()){
			q.push({tmp.f.front(),tmp.g.front()});
			tmp.f.pop();
			tmp.g.pop();
		}
	}
	if(tr[x][1]!=0){
		node tmp=dfs(tr[x][1],y+siz[x]);
		while(!tmp.f.empty()){
			q.push({tmp.f.front(),tmp.g.front()});
			tmp.f.pop();
			tmp.g.pop();
		}
	}
	if(tr[x][1]==0&&tr[x][0]==0){
		siz[x]--;
//		cout<<"114514 "<<x<<" 0\n";
		q.push({dep[x]+2,0});
	}
	else if(tr[x][1]==0||tr[x][0]==0){
//		cout<<"114514 "<<x<<" 1\n";
		q.push({dep[x]+1,1});
	}
	for(int i=1;i<=siz[x];i++){
		nobe num=q.top();
		ans+=abs(num.u-dep[x]);
//		cout<<x<<" "<<siz[x]<<" "<<i<<" "<<dep[x]<<" "<<num.u<<" "<<num.v<<"\n";
		q.pop();
		if(num.v==0)q.push({num.u+num.v+1,0}),q.push({num.u+num.v+1,0});
		else q.push({num.u+num.v+1,0});
	}
	queue<int>p,d;
//	cout<<x<<" "<<tr[x][0]<<" "<<tr[x][1]<<"\n";
	for(int i=1;i<=y&&!q.empty();i++){
//		cout<<q.top().u<<"---\n";
		p.push(q.top().u);
		d.push(q.top().v);
		q.pop(); 
	}
	return {p,d};
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	freopen("id.in","r",stdin);
	freopen("id.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s;
		add();
	}
	tty=dfs(0,0);
	cout<<ans;
	return 0;
}
/*
5
0
01
0011
010
01

*/
